package solutions.ferpa.ztest.ent;

import java.sql.*;
import java.util.ArrayList;
import br.com.telescope.adsrt.dom.*;
import br.com.telescope.adsrt.lib.*;
import br.com.telescope.t2.exception.Severity;

/**
 * API de persistência de dados da entidade CLASSE_MODELO
 * @author Gerado pelo Telescope
 */
public class EntClasseModelo extends Entity {
    
    public final static String ENTITY_NAME = "ZTEST.CLASSE_MODELO";
    public final static String TABLE_NAME = "CLASSE_MODELO";
    
    // <editor-fold defaultstate="collapsed" desc="Contrutores e inicializacao">
    /**
     * Construtores
     */
    public EntClasseModelo() {
        super();
        initialize();
    }
    
    public EntClasseModelo(BaseRuntime ctx) {
        super();
        initialize(ctx);
    }
    
    @Override
    public String getPrimaryKeyColumn() {
        return "ID";
    }
    
    @Override
    public void initialize(BaseRuntime ctx) {
        super.initialize(ctx);
        initialize();
    }
    
    public void initialize() {
        aId = new DomId(this,"ID", "Id"); 
        aId.setRequired(true);
        oId = new DomId();
        aDescricao = new DomTextLong(this,"DESCRICAO", "Descrição da classe metrológica"); 
        aDescricao.setSize(128);
        oDescricao = new DomTextLong();
        aCodigo = new DomUpper(this,"CODIGO", "Classe metrológica"); 
        aCodigo.setRequired(true);
        aCodigo.setSize(32);
        oCodigo = new DomUpper();
        aRazao1 = new DomDouble(this,"RAZAO1", "Razão da vazão (índice 1)"); 
        oRazao1 = new DomDouble();
        aRazao2 = new DomDouble(this,"RAZAO2", "Razão da vazão (índice 2)"); 
        oRazao2 = new DomDouble();
        aRazao3 = new DomDouble(this,"RAZAO3", "Razão da vazão (índice 3)"); 
        oRazao3 = new DomDouble();
        aRazao4 = new DomDouble(this,"RAZAO4", "Razão da vazão (índice 4)"); 
        oRazao4 = new DomDouble();
        aRazao5 = new DomDouble(this,"RAZAO5", "Razão da vazão (índice 5)"); 
        oRazao5 = new DomDouble();
        aRazao6 = new DomDouble(this,"RAZAO6", "Razão da vazão (índice 6)"); 
        oRazao6 = new DomDouble();
        aRazao7 = new DomDouble(this,"RAZAO7", "Razão da vazão (índice 7)"); 
        oRazao7 = new DomDouble();
        aRazao8 = new DomDouble(this,"RAZAO8", "Razão da vazão (índice 8)"); 
        oRazao8 = new DomDouble();
        aRazao9 = new DomDouble(this,"RAZAO9", "Razão da vazão (índice 9)"); 
        oRazao9 = new DomDouble();
        aRazao10 = new DomDouble(this,"RAZAO10", "Razão da vazão (índice 10)"); 
        oRazao10 = new DomDouble();
        ressetModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributos da entidade">
    
    // Id
    private DomId aId;
    private DomId oId;
    
    // Descrição da classe metrológica
    private DomTextLong aDescricao;
    private DomTextLong oDescricao;
    
    // Classe metrológica
    private DomUpper aCodigo;
    private DomUpper oCodigo;
    
    // Razão da vazão (índice 1)
    private DomDouble aRazao1;
    private DomDouble oRazao1;
    
    // Razão da vazão (índice 2)
    private DomDouble aRazao2;
    private DomDouble oRazao2;
    
    // Razão da vazão (índice 3)
    private DomDouble aRazao3;
    private DomDouble oRazao3;
    
    // Razão da vazão (índice 4)
    private DomDouble aRazao4;
    private DomDouble oRazao4;
    
    // Razão da vazão (índice 5)
    private DomDouble aRazao5;
    private DomDouble oRazao5;
    
    // Razão da vazão (índice 6)
    private DomDouble aRazao6;
    private DomDouble oRazao6;
    
    // Razão da vazão (índice 7)
    private DomDouble aRazao7;
    private DomDouble oRazao7;
    
    // Razão da vazão (índice 8)
    private DomDouble aRazao8;
    private DomDouble oRazao8;
    
    // Razão da vazão (índice 9)
    private DomDouble aRazao9;
    private DomDouble oRazao9;
    
    // Razão da vazão (índice 10)
    private DomDouble aRazao10;
    private DomDouble oRazao10;
    
    // <editor-fold defaultstate="collapsed" desc="Atributo ID">
    
    public EntClasseModelo id(Long value) {
        setId(value);
        return this;
    }
    
    public void setId(DomId value) {
        if (value == null || value.isNull()) {
            nullifyId();
        } else {
            aId.setValue(value.getValue());
            if (aId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setId(String value) {
        if (value == null) {
            nullifyId();
        } else {
            aId.setValue(value);
            if (aId.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setId(Long value) {
        aId.setValue(value);
        if (aId.isModified()) {
            setModified(true);
        }
    }
    
    public void setId(Object value) {
        aId.setValue(value);
        if (aId.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyId() {
        if (!aId.isNull()) {
            aId.setNull(true);
            setModified(true);
        }
    }
    
    public DomId getId() {
        return aId;
    }
    
    public DomId oldId() {
        return oId;
    }
    
    public Long valueOfId() {
        return aId.getValue();
    }
    
    public boolean isIdModified() {
        return aId.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo DESCRICAO">
    
    public EntClasseModelo descricao(String value) {
        setDescricao(value);
        return this;
    }
    
    public void setDescricao(DomTextLong value) {
        if (value == null || value.isNull()) {
            nullifyDescricao();
        } else {
            aDescricao.setValue(value.getValue());
            if (aDescricao.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setDescricao(String value) {
        if (value == null) {
            nullifyDescricao();
        } else {
            aDescricao.setValue(value);
            if (aDescricao.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setDescricao(Object value) {
        aDescricao.setValue(value);
        if (aDescricao.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyDescricao() {
        if (!aDescricao.isNull()) {
            aDescricao.setNull(true);
            setModified(true);
        }
    }
    
    public DomTextLong getDescricao() {
        return aDescricao;
    }
    
    public DomTextLong oldDescricao() {
        return oDescricao;
    }
    
    public String valueOfDescricao() {
        return aDescricao.getValue();
    }
    
    public boolean isDescricaoModified() {
        return aDescricao.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo CODIGO">
    
    public EntClasseModelo codigo(String value) {
        setCodigo(value);
        return this;
    }
    
    public void setCodigo(DomUpper value) {
        if (value == null || value.isNull()) {
            nullifyCodigo();
        } else {
            aCodigo.setValue(value.getValue());
            if (aCodigo.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setCodigo(String value) {
        if (value == null) {
            nullifyCodigo();
        } else {
            aCodigo.setValue(value);
            if (aCodigo.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setCodigo(Object value) {
        aCodigo.setValue(value);
        if (aCodigo.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyCodigo() {
        if (!aCodigo.isNull()) {
            aCodigo.setNull(true);
            setModified(true);
        }
    }
    
    public DomUpper getCodigo() {
        return aCodigo;
    }
    
    public DomUpper oldCodigo() {
        return oCodigo;
    }
    
    public String valueOfCodigo() {
        return aCodigo.getValue();
    }
    
    public boolean isCodigoModified() {
        return aCodigo.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO1">
    
    public EntClasseModelo razao1(Double value) {
        setRazao1(value);
        return this;
    }
    
    public void setRazao1(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao1();
        } else {
            aRazao1.setValue(value.getValue());
            if (aRazao1.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao1(String value) {
        if (value == null) {
            nullifyRazao1();
        } else {
            aRazao1.setValue(value);
            if (aRazao1.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao1(Double value) {
        aRazao1.setValue(value);
        if (aRazao1.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao1(Object value) {
        aRazao1.setValue(value);
        if (aRazao1.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao1() {
        if (!aRazao1.isNull()) {
            aRazao1.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao1() {
        return aRazao1;
    }
    
    public DomDouble oldRazao1() {
        return oRazao1;
    }
    
    public Double valueOfRazao1() {
        return aRazao1.getValue();
    }
    
    public boolean isRazao1Modified() {
        return aRazao1.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO2">
    
    public EntClasseModelo razao2(Double value) {
        setRazao2(value);
        return this;
    }
    
    public void setRazao2(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao2();
        } else {
            aRazao2.setValue(value.getValue());
            if (aRazao2.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao2(String value) {
        if (value == null) {
            nullifyRazao2();
        } else {
            aRazao2.setValue(value);
            if (aRazao2.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao2(Double value) {
        aRazao2.setValue(value);
        if (aRazao2.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao2(Object value) {
        aRazao2.setValue(value);
        if (aRazao2.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao2() {
        if (!aRazao2.isNull()) {
            aRazao2.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao2() {
        return aRazao2;
    }
    
    public DomDouble oldRazao2() {
        return oRazao2;
    }
    
    public Double valueOfRazao2() {
        return aRazao2.getValue();
    }
    
    public boolean isRazao2Modified() {
        return aRazao2.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO3">
    
    public EntClasseModelo razao3(Double value) {
        setRazao3(value);
        return this;
    }
    
    public void setRazao3(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao3();
        } else {
            aRazao3.setValue(value.getValue());
            if (aRazao3.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao3(String value) {
        if (value == null) {
            nullifyRazao3();
        } else {
            aRazao3.setValue(value);
            if (aRazao3.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao3(Double value) {
        aRazao3.setValue(value);
        if (aRazao3.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao3(Object value) {
        aRazao3.setValue(value);
        if (aRazao3.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao3() {
        if (!aRazao3.isNull()) {
            aRazao3.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao3() {
        return aRazao3;
    }
    
    public DomDouble oldRazao3() {
        return oRazao3;
    }
    
    public Double valueOfRazao3() {
        return aRazao3.getValue();
    }
    
    public boolean isRazao3Modified() {
        return aRazao3.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO4">
    
    public EntClasseModelo razao4(Double value) {
        setRazao4(value);
        return this;
    }
    
    public void setRazao4(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao4();
        } else {
            aRazao4.setValue(value.getValue());
            if (aRazao4.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao4(String value) {
        if (value == null) {
            nullifyRazao4();
        } else {
            aRazao4.setValue(value);
            if (aRazao4.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao4(Double value) {
        aRazao4.setValue(value);
        if (aRazao4.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao4(Object value) {
        aRazao4.setValue(value);
        if (aRazao4.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao4() {
        if (!aRazao4.isNull()) {
            aRazao4.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao4() {
        return aRazao4;
    }
    
    public DomDouble oldRazao4() {
        return oRazao4;
    }
    
    public Double valueOfRazao4() {
        return aRazao4.getValue();
    }
    
    public boolean isRazao4Modified() {
        return aRazao4.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO5">
    
    public EntClasseModelo razao5(Double value) {
        setRazao5(value);
        return this;
    }
    
    public void setRazao5(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao5();
        } else {
            aRazao5.setValue(value.getValue());
            if (aRazao5.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao5(String value) {
        if (value == null) {
            nullifyRazao5();
        } else {
            aRazao5.setValue(value);
            if (aRazao5.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao5(Double value) {
        aRazao5.setValue(value);
        if (aRazao5.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao5(Object value) {
        aRazao5.setValue(value);
        if (aRazao5.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao5() {
        if (!aRazao5.isNull()) {
            aRazao5.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao5() {
        return aRazao5;
    }
    
    public DomDouble oldRazao5() {
        return oRazao5;
    }
    
    public Double valueOfRazao5() {
        return aRazao5.getValue();
    }
    
    public boolean isRazao5Modified() {
        return aRazao5.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO6">
    
    public EntClasseModelo razao6(Double value) {
        setRazao6(value);
        return this;
    }
    
    public void setRazao6(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao6();
        } else {
            aRazao6.setValue(value.getValue());
            if (aRazao6.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao6(String value) {
        if (value == null) {
            nullifyRazao6();
        } else {
            aRazao6.setValue(value);
            if (aRazao6.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao6(Double value) {
        aRazao6.setValue(value);
        if (aRazao6.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao6(Object value) {
        aRazao6.setValue(value);
        if (aRazao6.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao6() {
        if (!aRazao6.isNull()) {
            aRazao6.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao6() {
        return aRazao6;
    }
    
    public DomDouble oldRazao6() {
        return oRazao6;
    }
    
    public Double valueOfRazao6() {
        return aRazao6.getValue();
    }
    
    public boolean isRazao6Modified() {
        return aRazao6.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO7">
    
    public EntClasseModelo razao7(Double value) {
        setRazao7(value);
        return this;
    }
    
    public void setRazao7(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao7();
        } else {
            aRazao7.setValue(value.getValue());
            if (aRazao7.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao7(String value) {
        if (value == null) {
            nullifyRazao7();
        } else {
            aRazao7.setValue(value);
            if (aRazao7.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao7(Double value) {
        aRazao7.setValue(value);
        if (aRazao7.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao7(Object value) {
        aRazao7.setValue(value);
        if (aRazao7.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao7() {
        if (!aRazao7.isNull()) {
            aRazao7.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao7() {
        return aRazao7;
    }
    
    public DomDouble oldRazao7() {
        return oRazao7;
    }
    
    public Double valueOfRazao7() {
        return aRazao7.getValue();
    }
    
    public boolean isRazao7Modified() {
        return aRazao7.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO8">
    
    public EntClasseModelo razao8(Double value) {
        setRazao8(value);
        return this;
    }
    
    public void setRazao8(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao8();
        } else {
            aRazao8.setValue(value.getValue());
            if (aRazao8.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao8(String value) {
        if (value == null) {
            nullifyRazao8();
        } else {
            aRazao8.setValue(value);
            if (aRazao8.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao8(Double value) {
        aRazao8.setValue(value);
        if (aRazao8.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao8(Object value) {
        aRazao8.setValue(value);
        if (aRazao8.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao8() {
        if (!aRazao8.isNull()) {
            aRazao8.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao8() {
        return aRazao8;
    }
    
    public DomDouble oldRazao8() {
        return oRazao8;
    }
    
    public Double valueOfRazao8() {
        return aRazao8.getValue();
    }
    
    public boolean isRazao8Modified() {
        return aRazao8.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO9">
    
    public EntClasseModelo razao9(Double value) {
        setRazao9(value);
        return this;
    }
    
    public void setRazao9(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao9();
        } else {
            aRazao9.setValue(value.getValue());
            if (aRazao9.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao9(String value) {
        if (value == null) {
            nullifyRazao9();
        } else {
            aRazao9.setValue(value);
            if (aRazao9.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao9(Double value) {
        aRazao9.setValue(value);
        if (aRazao9.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao9(Object value) {
        aRazao9.setValue(value);
        if (aRazao9.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao9() {
        if (!aRazao9.isNull()) {
            aRazao9.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao9() {
        return aRazao9;
    }
    
    public DomDouble oldRazao9() {
        return oRazao9;
    }
    
    public Double valueOfRazao9() {
        return aRazao9.getValue();
    }
    
    public boolean isRazao9Modified() {
        return aRazao9.isModified();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Atributo RAZAO10">
    
    public EntClasseModelo razao10(Double value) {
        setRazao10(value);
        return this;
    }
    
    public void setRazao10(DomDouble value) {
        if (value == null || value.isNull()) {
            nullifyRazao10();
        } else {
            aRazao10.setValue(value.getValue());
            if (aRazao10.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao10(String value) {
        if (value == null) {
            nullifyRazao10();
        } else {
            aRazao10.setValue(value);
            if (aRazao10.isModified()) {
                setModified(true);
            }
        }
    }
    
    public void setRazao10(Double value) {
        aRazao10.setValue(value);
        if (aRazao10.isModified()) {
            setModified(true);
        }
    }
    
    public void setRazao10(Object value) {
        aRazao10.setValue(value);
        if (aRazao10.isModified()) {
            setModified(true);
        }
    }
    
    public void nullifyRazao10() {
        if (!aRazao10.isNull()) {
            aRazao10.setNull(true);
            setModified(true);
        }
    }
    
    public DomDouble getRazao10() {
        return aRazao10;
    }
    
    public DomDouble oldRazao10() {
        return oRazao10;
    }
    
    public Double valueOfRazao10() {
        return aRazao10.getValue();
    }
    
    public boolean isRazao10Modified() {
        return aRazao10.isModified();
    }
    // </editor-fold>
    // </editor-fold>
    
    @Override
    protected void processDeleteRestrict() throws AdsException {
        // Nullify cascade ZTEST.MODELO_HIDROMETRO.FK_MODHID_RAZAO_VERTICAL
        {
            EntModeloHidrometro external = new EntModeloHidrometro(ctx);
            external.findByRazaoVertical(valueOfId());
            if (external.next()) {
                throw new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_RAZAO_VERTICAL.RESTRICTED",
                        AdsException.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro");
            }
            external.close();
        }
        // Nullify cascade ZTEST.MODELO_HIDROMETRO.FK_MODHID_RAZAO_HORIZONTAL
        {
            EntModeloHidrometro external = new EntModeloHidrometro(ctx);
            external.findByRazaoHorizontal(valueOfId());
            if (external.next()) {
                throw new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_RAZAO_HORIZONTAL.RESTRICTED",
                        AdsException.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro");
            }
            external.close();
        }
        // Nullify cascade ZTEST.CLASSE_VOLUME_VAZAO_TEMPO.FK_TAXVAZ_CLASSE_MODELO
        {
            EntClasseVolumeVazaoTempo external = new EntClasseVolumeVazaoTempo(ctx);
            external.findByClasseModelo(valueOfId());
            if (external.next()) {
                throw new AdsException("ZTEST.CLASSE_VOLUME_VAZAO_TEMPO.FK_TAXVAZ_CLASSE_MODELO.RESTRICTED",
                        AdsException.ERROR,
                        "Não pode excluir porque existem Volumes para cálculos de vazões (tempo) fazendo referencia para este registro");
            }
            external.close();
        }
        // Nullify cascade ZTEST.MODELO_HIDROMETRO.FK_MODHID_CLASSE_VERTICAL
        {
            EntModeloHidrometro external = new EntModeloHidrometro(ctx);
            external.findByClasseVertical(valueOfId());
            if (external.next()) {
                throw new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_CLASSE_VERTICAL.RESTRICTED",
                        AdsException.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro");
            }
            external.close();
        }
        // Nullify cascade ZTEST.MODELO_HIDROMETRO.FK_MODHID_CLASSE_HORIZONTAL
        {
            EntModeloHidrometro external = new EntModeloHidrometro(ctx);
            external.findByClasseHorizontal(valueOfId());
            if (external.next()) {
                throw new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_CLASSE_HORIZONTAL.RESTRICTED",
                        AdsException.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro");
            }
            external.close();
        }
    }
    
    // <editor-fold defaultstate="collapsed" desc="getErrors">
    /**
     * Traduz um erro recebido do banco de dados para um AdsException
     */
    @Override
    public AdsException getErrors(String errorMsg, int transaction) {
        AdsException e;
        String msg = errorMsg.toUpperCase();
        
        if (transaction == DELETE_TRANSACTION) {
            if (msg.indexOf("FK_MODHID_RAZAO_VERTICAL") >= 0) {
                e = new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_RAZAO_VERTICAL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro! (FK_MODHID_RAZAO_VERTICAL)");
                return e;
            } else if (msg.indexOf("FK_MODHID_RAZAO_HORIZONTAL") >= 0) {
                e = new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_RAZAO_HORIZONTAL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro! (FK_MODHID_RAZAO_HORIZONTAL)");
                return e;
            } else if (msg.indexOf("FK_TAXVAZ_CLASSE_MODELO") >= 0) {
                e = new AdsException("ZTEST.CLASSE_VOLUME_VAZAO_TEMPO.FK_TAXVAZ_CLASSE_MODELO.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Volumes para cálculos de vazões (tempo) fazendo referencia para este registro! (FK_TAXVAZ_CLASSE_MODELO)");
                return e;
            } else if (msg.indexOf("FK_MODHID_CLASSE_VERTICAL") >= 0) {
                e = new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_CLASSE_VERTICAL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro! (FK_MODHID_CLASSE_VERTICAL)");
                return e;
            } else if (msg.indexOf("FK_MODHID_CLASSE_HORIZONTAL") >= 0) {
                e = new AdsException("ZTEST.MODELO_HIDROMETRO.FK_MODHID_CLASSE_HORIZONTAL.RESTRICTED", 
                        Severity.ERROR,
                        "Não pode excluir porque existem Modelos de hidrômetros fazendo referencia para este registro! (FK_MODHID_CLASSE_HORIZONTAL)");
                return e;
            } else {
                e = new AdsException("ZTEST.CLASSE_MODELO.GET_ERRORS_UNKNOWN",
                        AdsException.UNKNOWN,
                        "Erro não esperado: " + errorMsg);
            }
        } else {
            if (msg.indexOf("UK_CLAMOD_CODIGO") >= 0) {
                e = new AdsException("ZTEST.CLASSE_MODELO.UK_CLAMOD_CODIGO", 
                        Severity.ERROR,
                        "Registro duplicado! Código da classe de modelo deve ser único Classe metrológica ${CODIGO} (UK_CLAMOD_CODIGO)");
                return e;
            } else if (msg.indexOf("PK_CLAMOD") >= 0) {
                e = new AdsException("ZTEST.CLASSE_MODELO.PK_CLAMOD", 
                        Severity.ERROR,
                        "ID duplicado! (PK_CLAMOD)");
                return e;
            } else {
                e = new AdsException("ZTEST.CLASSE_MODELO.GET_ERRORS_UNKNOWN",
                        AdsException.UNKNOWN,
                        "Erro não esperado: " + errorMsg);
            }
        }
        return e;
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Entity Information">
    
    public String getEntityName() {
        return ENTITY_NAME;
    }
    
    public String getTableName() {
        return TABLE_NAME;
    }
    
    public String idSequenceName() {
        return "PK_SEQUENCE";
    }
    
    private ArrayList<Field> allAttributes;
    public ArrayList<Field> getAllAttributes() {
        if (allAttributes == null) {
            allAttributes = new ArrayList<Field>();
            allAttributes.add(aId);
            allAttributes.add(aDescricao);
            allAttributes.add(aCodigo);
            allAttributes.add(aRazao1);
            allAttributes.add(aRazao2);
            allAttributes.add(aRazao3);
            allAttributes.add(aRazao4);
            allAttributes.add(aRazao5);
            allAttributes.add(aRazao6);
            allAttributes.add(aRazao7);
            allAttributes.add(aRazao8);
            allAttributes.add(aRazao9);
            allAttributes.add(aRazao10);
        }
        return allAttributes;
    }
    
    /**
     * Retorna o valor da primeira UK da entidade
     * Se ela for composta, retorna a concatenação de toda a combinação
     * de atributos separados por um espaço.
     */
    public String valueOfUk() {
        return getCodigo().toString();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Relationships">
    
    
    public void findByCodigo(String codigo) throws AdsException {
        findBy(new String[] {"CODIGO"},
                new Object[] {codigo});
    }
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo RAZAO_VERTICAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroRazaoVertical() throws AdsException {
        return findAllModeloHidrometroRazaoVertical("order by ID");
    }
    
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo RAZAO_VERTICAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroRazaoVertical(String sqlAppend) throws AdsException {
        EntModeloHidrometro out = new EntModeloHidrometro(ctx);
        out.find("select ID from MODELO_HIDROMETRO where RAZAO_VERTICAL_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo RAZAO_HORIZONTAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroRazaoHorizontal() throws AdsException {
        return findAllModeloHidrometroRazaoHorizontal("order by ID");
    }
    
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo RAZAO_HORIZONTAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroRazaoHorizontal(String sqlAppend) throws AdsException {
        EntModeloHidrometro out = new EntModeloHidrometro(ctx);
        out.find("select ID from MODELO_HIDROMETRO where RAZAO_HORIZONTAL_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de CLASSE_VOLUME_VAZAO_TEMPO que referenciam este registro através do atributo CLASSE_MODELO_ID
     */
    public EntClasseVolumeVazaoTempo findAllClasseVolumeVazaoTempoClasseModelo() throws AdsException {
        return findAllClasseVolumeVazaoTempoClasseModelo("order by ID");
    }
    
    /**
     * Retorna os registros de CLASSE_VOLUME_VAZAO_TEMPO que referenciam este registro através do atributo CLASSE_MODELO_ID
     */
    public EntClasseVolumeVazaoTempo findAllClasseVolumeVazaoTempoClasseModelo(String sqlAppend) throws AdsException {
        EntClasseVolumeVazaoTempo out = new EntClasseVolumeVazaoTempo(ctx);
        out.find("select ID from CLASSE_VOLUME_VAZAO_TEMPO where CLASSE_MODELO_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo CLASSE_VERTICAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroClasseVertical() throws AdsException {
        return findAllModeloHidrometroClasseVertical("order by ID");
    }
    
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo CLASSE_VERTICAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroClasseVertical(String sqlAppend) throws AdsException {
        EntModeloHidrometro out = new EntModeloHidrometro(ctx);
        out.find("select ID from MODELO_HIDROMETRO where CLASSE_VERTICAL_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo CLASSE_HORIZONTAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroClasseHorizontal() throws AdsException {
        return findAllModeloHidrometroClasseHorizontal("order by ID");
    }
    
    /**
     * Retorna os registros de MODELO_HIDROMETRO que referenciam este registro através do atributo CLASSE_HORIZONTAL_ID
     */
    public EntModeloHidrometro findAllModeloHidrometroClasseHorizontal(String sqlAppend) throws AdsException {
        EntModeloHidrometro out = new EntModeloHidrometro(ctx);
        out.find("select ID from MODELO_HIDROMETRO where CLASSE_HORIZONTAL_ID = " + valueOfId() + " " + sqlAppend);
        return out;
    }
    
    
    /**
     * Método que copia os valores dos atributos
     * para os valores respectivos old 
     */
    public void saveOldAtributes() {
        oRazao2.setValue(aRazao2);
        oRazao10.setValue(aRazao10);
        oRazao9.setValue(aRazao9);
        oRazao8.setValue(aRazao8);
        oRazao7.setValue(aRazao7);
        oRazao6.setValue(aRazao6);
        oRazao5.setValue(aRazao5);
        oRazao4.setValue(aRazao4);
        oRazao3.setValue(aRazao3);
        oRazao1.setValue(aRazao1);
        oDescricao.setValue(aDescricao);
        oCodigo.setValue(aCodigo);
        oId.setValue(aId);
    }
    
    /**
     * Método que retorna as regras da entidade
     * @return ArrayList com as regras ou null caso não existir nenhuma regra
     */
    public ArrayList getAllRules() {
        ArrayList<EntityRule> out = new ArrayList<EntityRule>();
        {
            PrimaryKeyRule rule = new PrimaryKeyRule();
            rule.setEntity(EntClasseModelo.class);
            rule.setName("PK_CLAMOD");
            rule.setPkAttribute(new DomId("ID",""));
            out.add(rule);
        }
        {
            UniqueKeyRule rule = new UniqueKeyRule();
            rule.setEntity(EntClasseModelo.class);
            rule.setName("UK_CLAMOD_CODIGO");
            rule.addAttribute(new DomUpper("CODIGO",""));
            out.add(rule);
        }
        return out;
    }
    // </editor-fold>
    
    @Override
    public void fillDefaultValues() throws AdsException {
        if (aId.isNull()) {
            aId.setValue("" + ctx.getNextVal("pk_sequence"));
        }
    }
    
    // <editor-fold defaultstate="collapsed" desc="Métodos customizados">
}
